Справочник по конфигурации¶
В этом разделе описаны опции конфигурации, представленные в Tarantool DB.
app.roles.slow_log¶
Секция app.roles.slow_log
задает опции конфигурации журнала медленных запросов.
Пример
roles_cfg:
app.roles.slow_log:
enable: true
threshold: 3
namespaces:
- app
app.roles.slow_log.enable¶
Включить запись в журнал медленных запросов. По умолчанию запись будет включена для запросов через модуль CRUD.
Тип: boolean
Значение по умолчанию: false
app.roles.slow_log.threshold¶
Максимальное время выполнения запроса в секундах. При превышении этого значения запрос считается медленным и записывается в журнал.
Тип: number
Значение по умолчанию: 0.5
app.roles.slow_log.namespaces¶
Задать функции, для которых будет включено логирование медленных запросов.
Тип: table
Значение по умолчанию: {}
app.roles.tracing¶
Секция app.roles.tracing
задает опции конфигурации трассировки.
Пример
roles_cfg:
app.roles.tracing:
enabled: true
global_sample_rate: 0
sample_rates:
get_token_api: 2
debug_1: 1
base_url: 'http://tracing:9411/api/v2/spans'
api_method: 'POST'
report_interval: 1
spans_limit: 1000
app.roles.tracing.global_sample_rate¶
Глобальный коэффициент частоты трассировки – трассируется каждый N-й вызов функции. Примеры:
10
– трассируется каждый десятый запрос;
1
– трассируются все запросы;
0
– все запросы не трассируются.
Примечание
Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду.
Например, при нагрузке 1000 RPS, если функция start_span()
вызывается при каждом обращении к базе, установите значение global_sample_rate = 1000
.
Тип: integer
Значение по умолчанию: 0
app.roles.tracing.sample_rates¶
Коэффициенты частоты трассировки для заданных сегментов (spans). Значение опции – это таблица из пар ключ-значение, где
ключ – название сегмента;
значение – частота трассировки для этого сегмента.
Примечание
Рекомендуется установить такое значение параметра, чтобы трассировалось не более одного запроса в секунду.
Например, при нагрузке 1000 RPS у конкретной функции, в которой вызывается функция start_span() с названием get_user()
,
установите в tracing.sample_rates
ключ-значение {get_user: 1000}
.
Тип: table
Значение по умолчанию: ‘{}’
Пример:
sample_rates:
get_user: 1000
get_token: 10000
app.roles.tracing.base_url¶
URL-адрес сервера трассировки, куда отправляются данные трассировки.
Тип: string
Значение по умолчанию: ‘http://127.0.0.1:9411/api/v2/spans’
app.roles.tracing.api_method¶
HTTP-метод, используемый для отправки данных трассировки на сервер.
Возможные значения: POST
, GET
, PUT
.
Тип: string
Значение по умолчанию: ‘POST’
app.roles.tracing.report_interval¶
Интервал в секундах между отправкой на сервер собранных данных о трассировке.
Тип: integer
Значение по умолчанию: 10
app.roles.tracing.spans_limit¶
Максимальное количество сегментов (span) трассировки, которые могут быть сохранены локально на экземпляре Tarantool перед отправкой во внешнюю систему хранения результатов трассировки.
Тип: integer
Значение по умолчанию: 1000
config.storage¶
Секция config.storage
определяет опции конфигурации узла как части централизованного хранилища конфигураций.
Узнать больше: Запуск кластера Tarantool DB как централизованного хранилища конфигураций.
Пример
roles_cfg:
config.storage:
status_check_interval: 3
config.storage.status_check_interval¶
Интервал в секундах между проверками состояния сервера в кластере.
Тип: number
Значение по умолчанию: 5
roles.cooler¶
Доступно с версии 3.0.0.
Секция задает опции конфигурации для технологической роли roles.cooler. Опции используются для настройки архивации устаревших данных из спейсов memtx в спейсы на vinyl. Узнать больше: Архивация данных по их времени жизни.
-
roles.cooler.<name>.expirationd.<index_name>
roles.cooler.<name>.expirationd.<index_name>.force_allow_functional_index
roles.cooler.<name>.expirationd.<index_name>.full_scan_delay
roles.cooler.<name>.expirationd.<index_name>.iteration_delay
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_error
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_success
roles.cooler.<name>.expirationd.<index_name>.tuples_per_iteration
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor
Пример
roles_cfg:
roles.cooler:
user_sessions:
expirationd:
primary_key: # Явное указание сканирования по первичному ключу
full_scan_time: 300
tuples_per_iteration: 100
last_updated_index: # Дополнительный индекс
full_scan_time: 1000
tuples_per_iteration: 200
start_key: user_sessions_last_updated_start_key
iterator_type: 'LT'
Здесь:
user_sessions
– название спейса memtx, для которого настраивается архивация;primary
– название первичного ключа, по которому идет сканирование спейса;last_updated_index
– название дополнительного индекса, по которому идет сканирование спейса;full_scan_time
– время обхода спейса в секундах;tuples_per_iteration
– количество кортежей, которое проверяется за одну итерацию;start_key
– ключ, с которого начинается проход по индексу;iterator_type
– тип итератора для обхода спейса.
Кроме того, в конфигурации можно задать уровень логирования модуля cooler
с помощью опции log.modules.cooler
:
log:
modules:
cooler: 'info'
Значение опции по умолчанию: info
.
Возможные значения:
info
– информация по запуску и завершению задачи архивации;verbose
– информация по запуску и завершению задачи архивации, а также статистика по задаче и логирование всех новых параметров архивации. Уровеньverbose
используется, чтобы оценить работу архивации через логи;debug
– информация по каждому архивируемому кортежу. Уровеньdebug
используется для отладки работы модуля, включать данный уровень надолго не рекомендуется.
Задать опцию log.modules.cooler
можно на любом
уровне конфигурации:
на все экземпляры кластера, группу, набор реплик или отдельный экземпляр.
Полное описание опции log.modules
приведено в документации Tarantool.
roles.cooler.<name>¶
Название спейса memtx, для которого настраивается архивация. Обязательный параметр.
Тип: string
roles.cooler.<name>.expirationd.<index_name>¶
Название индекса, по которому идет сканирование спейса.
На каждый индекс спейса может быть задана только одна задача архивации.
Настройка этой опции позволяет избежать лишнего прохода по первичному ключу, если используется другой, более подходящий
индекс (например, по last_updated
или archived_at
):
если секция
expirationd.\<index_name\>
присутствует и содержит только вторичные индексы, идет сканирование только по этим индексам. Задача по первичному ключу при этом не запускается;если секция
expirationd.\<index_name\>
пропущена, по умолчанию идет сканирование по первичному ключу;если требуется запуск по первичному ключу вместе с другими индексами или настройка параметров, необходимо явно указать секцию
expirationd.\<index_name\>
с названием первичного ключа в конфигурации (см. пример выше).
Тип: string
roles.cooler.<name>.expirationd.<index_name>.force¶
Если задано значение false
, модуль expirationd
обрабатывает задачи для всех типов спейсов только на экземпляре,
доступном для записи.
Он не обрабатывает задачи для нелокальных персистентных спейсов на экземпляре только для чтения.
Это означает, что expirationd
не будет запускать обработку задачи на реплике для обычных спейсов.
Если задано значение true
, принудительно включается обработка такой задачи.
Тип: boolean
Значение по умолчанию: false
roles.cooler.<name>.expirationd.<index_name>.force_allow_functional_index¶
Если задано значение false
, модуль expirationd
возвращает ошибку при итерации по функциональному индексу,
поскольку это может привести к сбою.
Вы можете пропустить ошибку, установив значение true
, например при реализации собственной функции iterate_with
.
Тип: boolean
Значение по умолчанию: false
roles.cooler.<name>.expirationd.<index_name>.full_scan_delay¶
Время ожидания между полными сканированиями в секундах.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 1
roles.cooler.<name>.expirationd.<index_name>.full_scan_time¶
Время обхода спейса в секундах.
Используется для расчета пауз между итерациями.
Настройка регулирует скорость работы архивации данных.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 3600
roles.cooler.<name>.expirationd.<index_name>.iterate_with¶
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: string
roles.cooler.<name>.expirationd.<index_name>.iteration_delay¶
Максимальное время ожидания между итерациями в секундах.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 1
roles.cooler.<name>.expirationd.<index_name>.iterator_type¶
Тип итератора для обхода спейса:
строка или константа box.index, например,
EQили
box.index.EQ`.
Тип: string или number
Значение по умолчанию: box.index.ALL
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_error¶
Имя функции, которая вызывается после завершения полного сканирования из-за ошибки.
Тип: string
roles.cooler.<name>.expirationd.<index_name>.on_full_scan_success¶
Имя функции, которая вызывается после успешного завершения полной итерации сканирования.
Тип: string
roles.cooler.<name>.expirationd.<index_name>.process_while¶
Имя функции, которая вызывается перед проверкой каждого кортежа.
Если функция возвращает false
, задача останавливается до следующего полного сканирования.
По умолчанию используется функция, которая всегда возвращает true
.
Тип: string
roles.cooler.<name>.expirationd.<index_name>.start_key¶
Значение индекса кортежа, с которого начнется итерация.
Если тип итератора — EQ
, выполняется итерация по кортежам с этим значением индекса.
Если параметр пропущен или равен нулю, будут проверены все кортежи.
Значение опции должно соответствовать одному из условий ниже:
значение имеет тот же тип данных, что и поле (или поля) индекса;
если в
start_key
передана функция, она возвращает тот же тип данных, что и поле (или поля) индекса.
Если в start_key
передана строка, она интерпретируется как имя функции.
Тип: string или table
roles.cooler.<name>.expirationd.<index_name>.tuples_per_iteration¶
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 1024
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len¶
Предполагаемый размер спейса vinyl в первой итерации.
Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert
) выполняются при
обращении к данным.
Поэтому следует подсчитывать размер кортежей при первом запуске – это позволит определить приблизительный размер спейса.
Значение опции vinyl_assumed_space_len
– это приблизительный размер спейса для первого запуска.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Смотрите также: roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor.
Тип: number
Значение по умолчанию: 10⁷
roles.cooler.<name>.expirationd.<index_name>.vinyl_assumed_space_len_factor¶
Коэффициент для пересчёта размера спейса vinyl.
Размер спейса vinyl невозможно подсчитать точно, поскольку многие операции (например, upsert
) выполняются при
обращении к данным.
Поэтому следует подсчитывать размер кортежей при первом запуске – это позволит определить приблизительный размер спейса.
vinyl_assumed_space_len – это приблизительное количество
для первого запуска, а значение опции vinyl_assumed_space_len_factor
– для следующего этапа.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 2
roles.crud-<router_or_storage>¶
Секция задает опции конфигурации для технологических ролей roles.crud-router
и roles.crud-storage
.
Опции используются для настройки сбора метрик модуля CRUD.
Узнать больше про роли, связанные с crud
: roles.crud-router, roles.crud-storage.
roles.crud-<router_or_storage>.stats_quantile_age_buckets_count
roles.crud-<router_or_storage>.stats_quantile_tolerated_error
Пример
roles_cfg:
roles.metrics-export:
http:
- endpoints:
- format: prometheus
path: /metrics
listen: 8081
groups:
routers:
replication:
failover: manual
sharding:
roles: [router]
roles:
- roles.crud-router
- roles.metrics-export
- roles.dictionary-router
roles_cfg:
roles.crud-router:
stats: true
stats_driver: metrics
stats_quantiles: true
stats_quantile_tolerated_error: 0.001
stats_quantile_age_buckets_count: 5
stats_quantile_max_age_time: 180
roles.crud-<router_or_storage>.stats¶
Включить сбор метрик модуля CRUD.
По умолчанию сбор метрик отключен, так как их работа снижает производительность:
на 3-10% – при использовании локального драйвера;
5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию;
до 20% – при использовании метрик, которые содержат квантили.
Тип: boolean
Значение по умолчанию: false
roles.crud-<router_or_storage>.stats_driver¶
Задать драйвер для хранения собранных метрик CRUD. Возможные значения:
local
– использовать локальный драйвер;metrics
– использовать драйвер метрик.
Тип: string
Значение по умолчанию: ‘metrics’
Примечание
Включенный сбор метрик CRUD снижает производительность:
на 3-10% – при использовании локального драйвера;
5-15% – при использовании драйвера метрик. Этот драйвер используется по умолчанию.
roles.crud-<router_or_storage>.stats_quantiles¶
Включить квантили метрик.
Опция crud.stats_quantiles
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Примечание
Вычисление квантилей снижает производительность на величину до 10%.
Тип: boolean
Значение по умолчанию: false
roles.crud-<router_or_storage>.stats_quantile_age_buckets_count¶
Количество сегментов квантилей summary.
Увеличение значения сглаживает скользящее окно, но потребляет дополнительную память и CPU.
Опция crud.stats_quantile_age_buckets_count
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Тип: number
Значение по умолчанию: 2
roles.crud-<router_or_storage>.stats_quantile_max_age_time¶
Время жизни сегмента (bucket) в секундах.
Опция crud.stats_quantile_max_age_time
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Меньший срок жизни сегмента приводит к меньшему временному окну для квантилей, при этом
больше ресурсов CPU используется на ротацию сегментов.
Если у вашего приложения низкая частота запросов, увеличьте значение, чтобы уменьшить количество пробелов -nan
в значениях квантилей.
Узнать больше про опцию crud.stats_quantile_max_age_time
можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 60
roles.crud-<router_or_storage>.stats_quantile_tolerated_error¶
Задать допустимую погрешность квантиля.
Опция stats_quantile_tolerated_error
работает только в том случае, если в опции roles.crud-<router_or_storage>.stats_driver задан драйвер метрик (crud.stats_driver = 'metrics'
).
Узнать больше про опцию crud.stats_quantile_tolerated_error
можно в документации Tarantool в
разделе Мониторинг.
Тип: number
Значение по умолчанию: 0.001
roles.dictionary-<router_or_storage>¶
Секция задает опции конфигурации для технологических ролей roles.dictionary-router
и roles.dictionary-storage
.
Опции используются для настройки работы словарей.
Пример
roles_cfg:
roles.dictionary-router:
update_instances_list_period: 300
roles.dictionary-storage:
batch_size: 1000
worker_sleep_in_second: 60
update_instances_list_period: 300
connect_timeout: 3
roles.dictionary-<router_or_storage>.batch_size¶
Размер пакета для обмена между узлами в байтах.
Тип: number
Значение по умолчанию: 400
roles.dictionary-<router_or_storage>.worker_sleep_in_second¶
Интервал в секундах между опросами соседнего экземпляра на наличие новых данных.
Тип: number
Значение по умолчанию: 3
roles.dictionary-<router_or_storage>.update_instances_list_period¶
Доступно с версии 2.0.0.
Частота обновления списка узлов в секундах. Модуль хранит список узлов и отслеживает нездоровые узлы. При обнаружении нездорового узла модуль прекращает попытки связаться с ним до следующего обновления списка. Опция также позволяет отслеживать появление новых узлов в кластере.
Тип: number
Значение по умолчанию: 60
roles.dictionary-<router_or_storage>.connect_timeout¶
Доступно с версии 2.0.0.
Время ожидания установки соединения в секундах.
Тип: number
Значение по умолчанию: Неограниченно
roles.expirationd¶
Секция roles.expirationd
задает опции конфигурации устаревания данных.
roles.expirationd.<name>¶
Название задачи по устареванию данных. Обязательный параметр.
Тип: string
Примеры конфигурации¶
Без пользовательской логики
roles_cfg:
roles.expirationd:
task_name1:
space: messages
options:
args:
lifetime_in_seconds: 15
time_create_field: dt
Здесь:
task_name1
– название задачи по устареванию данных;space
– название спейса, по которому идет поиск устаревших кортежей;options.args
– дополнительные опции конфигурации:lifetime_in_seconds
– время жизни кортежа в секундах;time_create_field
– название поля, по которому проверяется время жизни кортежа.
Узнать больше: Автоматическое удаление устаревших кортежей из спейса.
С пользовательской логикой
roles_cfg:
roles.expirationd:
messages_expiration:
space: messages
is_expired: messages_is_tuple_expired
is_master_only: true
options:
tuples_per_iteration: 100
iterate_with: messages_iterate_with
process_expired_tuple: messages_process_expired_tuple
args:
seconds: 5
Здесь:
messages_expiration
– название задачи по устареванию данных;space
– название спейса, по которому идет поиск устаревших кортежей;is_expired
– название функции, которая получает кортеж и проверяет его срок жизни;is_master_only
– экспирация запущена только на master-узлах;options
– дополнительные опции конфигурации:tuples_per_iteration
– количество кортежей, которое проверяется за одну итерацию;iterate_with
– название функции, которая получает и обрабатывает устаревшие кортежи;process_expired_tuple
– название функции, возвращающей итератор для обхода спейса;args
– аргументы, доступные в функцияхmessage_iterate_with
иmessage_process_expired_tuple
,seconds
– время жизни кортежа. А также для поиска устаревших данных по умолчанию. В этом случае используются следующие поля:lifetime_in_seconds
- время жизни кортежа в секундах;time_create_field
- поле “время создания” для оценки времени жизни.
Узнать больше: Проверка устаревших кортежей в спейсе с помощью пользовательских функций.
roles.expirationd.<name>.is_expired¶
Название функции, которая получает кортеж и проверяет его срок жизни.
Функция возвращает true
, если время жизни кортежа истекло.
Обязательный параметр.
Тип: function
roles.expirationd.<name>.is_master_only¶
Запустить работу с устаревающими кортежами только на master-узлах.
Тип: boolean
Значение по умолчанию: false
roles.expirationd.<name>.space¶
Название спейса или идентификатор спейса, по которому идет поиск устаревших кортежей. Обязательный параметр.
Тип: string или number
roles.expirationd.<name>.options¶
Дополнительные опции конфигурации.
Тип: table
Значение по умолчанию: {}
roles.expirationd.<name>.options.args¶
Дополнительные аргументы конфигурации. Доступные аргументы:
seconds
(number
) – время жизни кортежа в секундах. Аргумент нужен, когда для обработки устаревших кортежей используются пользовательские функции. Аргумент передается в опции roles.expirationd.<name>.options.iterate_with и roles.expirationd.<name>.options.process_expired_tuple в качестве дополнительного контекста;lifetime_in_seconds
(number
) – время жизни кортежа в секундах. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей;time_create_field
(string
) – название поля, по которому проверяется время жизни кортежа. Доступно с версии 1.2.0. Аргумент используется для настройки автоматического удаления устаревших кортежей. Указанное поле может быть нескольких типов. Функция определения текущего времени зависит от типа данных в опцииtime_create_field
:
Тип |
Текущее время |
---|---|
число |
|
целое число |
|
беззнаковое |
|
datetime |
|
Тип: table
Значение по умолчанию: {}
roles.expirationd.<name>.options.iterate_with¶
Название функции, возвращающей итератор для обхода спейса. Если опция не указана, используется функция по умолчанию. Функция по умолчанию возвращает такой итератор, какой возвращается в index_object:pairs().
Тип: function
roles.expirationd.<name>.options.process_expired_tuple¶
Название функции, которая получает и обрабатывает устаревшие кортежи.
Если опция не указана (или указан nil
), устаревшие кортежи удаляются.
Тип: function
roles.expirationd.<name>.options.tuples_per_iteration¶
Количество кортежей, которое проверяется за одну итерацию.
В значении опции допустимо передавать номер FFI, например 1LL
или 1ULL
.
Тип: number
Значение по умолчанию: 1024
roles.tcf-<worker_or_coordinator>¶
Секция задает опции конфигурации для технологических ролей roles.tcf-worker
и roles.tcf-coordinator
.
Опции определяют настройки кластеров, необходимые для взаимодействия с модулем Tarantool Clusters Federation (TCF).
Полный список опций приведен в документации TCF.
Задать конфигурацию кластера можно как через yaml
-файл, так и в веб-интерфейсе Tarantool DB на вкладке TCF.
Узнать больше про технологические роли, связанные с TCF: roles.tcf-worker, roles.tcf-coordinator.